<?php
namespace app\gatewayworker;
use GatewayWorker\Lib\Gateway;

class MyEvent
{
    public static function onWorkerStart($buiness){
        echo "==event===onWorkerStart===".PHP_EOL;
    }

    public static function onConnect($client_id){
        echo "Your client_id is $client_id".PHP_EOL;
    }

    public static function onMessage($client_id,$message)
    {
        echo "==MyEvent====client_id==$client_id===message:$message====onMessage".PHP_EOL;
        //向所有客户端发送数据
        Gateway::sendToAll("===Gateway==sendToAll==$client_id====$message==");
        /*
        //向指定的客户端发送消息
        Gateway::sendToClient($client_id,"服务端已收到消息===$message");
        //关闭指定的客户端
        Gateway::closeClient($client_id);
        //判断某个客户端是否在线
        var_dump(Gateway::isOnline($client_id));
        //通过客户端id绑定用户uid (uid与client_id是一对多的关系，系统允许一个uid下有多个client_id)
        Gateway::bindUid($client_id,999);
        //将client_id与uid解绑
        Gateway::unbindUid($client_id,999);
        //判断$uid是否在线，此方法需要配合Gateway::bindUid($client_uid, $uid)使用
        var_dump(Gateway::isUidOnline(999));
        //通过uid获取所有已在线的客户端id
        var_dump(Gateway::getClientIdByUid(999));
        //通过客户端id 获取所有uid
        var_dump(Gateway::getUidByClientId($client_id));
        //服务端通过Uid向所有uid用户发送消息
        Gateway::sendToUid(999,"服务端通过Uid向所有uid用户发送消息");
        //将client_id加入某个组
        Gateway::joinGroup($client_id,1000);
        //将client_id从某个组中删除
        Gateway::leaveGroup($client_id,1000);
        //取消分组，或者说解散分组
        Gateway::ungroup(1000);
        //向某个分组的所有在线client_id发送数据
        Gateway::sendToGroup(1000,"想某个分组发送消息");
        //获取某分组当前在线成连接数
        var_dump(Gateway::getClientCountByGroup(1000));
        //获取某个分组所有在线client_id信息
        var_dump(Gateway::getClientSessionsByGroup(1000));
        //获取当前在线连接总数（多少client_id在线）
        var_dump(Gateway::getAllClientIdCount());
        //获取当前所有在线client_id信息
        var_dump(Gateway::getAllClientSessions());
        //设置某个client_id对应的session
        Gateway::setSession($client_id,["clientId"=>$client_id,"username"=>"jacke"]);
        //获取某个client_id对应的session
        var_dump(Gateway::getSession($client_id));
        //获取全局所有在线group id列表
        var_dump(Gateway::getAllGroupIdList());
        */
    }

    public static function onClose($client_id){
        echo 'client_id='.$client_id.' closed'.PHP_EOL;
    }

    public static function onWorkerStop(){
        echo 'worker stop .......';
    }

    public static function onWebSocketConnect($client_id,$data){
        echo "=client_id==$client_id====onWebSocketConnect".PHP_EOL;
        var_dump($data);
    }
}